package logica;

import java.util.Iterator;

import value_objects.VoInfoBando;

public class Jugador {

	private String nombre;
	private String idioma;
	private Bando bando;
	private Boolean abandono;
	
	/**
	 * Constructor por defecto
	 */
	public Jugador() {
		nombre = "";
		idioma = "";
		bando = null;
		abandono = false;
	}
	
	/**
	 * Constructor normal a partir del nombre del jugador, el idioma y el bando
	 * @param nombre
	 * @param idioma
	 * @param bando
	 */
	public Jugador(String nombre, String idioma, Bando bando) {
		this.nombre = nombre;
		this.idioma = idioma;
		this.bando = bando;
		abandono = false;
	}
	
	/**
	 * Retorna la info del bando útil para el cliente
	 * @return
	 */
	public VoInfoBando obtenerInfoBando() {
		return (new VoInfoBando(getBando().getNombreBando(), getBando().obtenerInfoBando(), abandono));
	}

	/**
	 * Retorna un String con toda la información del jugador en formato XML.
	 * @return
	 */
	public String getXML() {
		String respuesta=  
				"<NombreJugador>"+ getNombre() + "</NombreJugador>" +
				"<Idioma>" + getIdioma() + "</Idioma>" +
				"<NombreBando>" + getBando().getNombreBando() + "</NombreBando>" +
				"<CantBarcos>" + getBando().getCantidadBarcos() + "</CantBarcos>" +
				"<Barcos>";
		
		Iterator<Barco> barcos = getBando().getBarcos();
		while (barcos.hasNext()) {
			respuesta = respuesta + barcos.next().getXML(getBando().getNombreBando());
		}
		return respuesta + "</Barcos>";
	}

	// ********************* GETTERS Y SETTERS *********************
	
	public void setAbandono(Boolean _abandono) {
		abandono = _abandono;
		
	}
	public Boolean getAbandono() {
		return abandono;
	}
	
	public String getNombre() {
		return nombre;
	}
	
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	public String getIdioma() {
		return idioma;
	}
	
	public void setIdioma(String idioma) {
		this.idioma = idioma;
	}
	
	public Bando getBando() {
		return bando;
	}
	
	public void setBando(Bando bando) {
		this.bando = bando;
	}
}
